There are presently available a large variety of computer software application programs which are productive and useful for a large number of users. Typically, these programs are written to run on a computer manufactured by a particular manufacturer. Since, in most cases a program written from one type of computer will not run on a computer manufactured by another company, several versions of the same program are written--one version for each different computer. However, there are many programs which cannot be used by some computer owners because a program version has not been written for the type of computer that they own.
The one-to-one correspondence between the software version and the underlying computer hardware must occur even if two different computers use the same internal microprocessor chip because the software generally controls certain parameters of the system which are unique to a computer system manufactured by one company.
More specifically, many widely-used programs control the computer peripherals in a direct manner so that a program designed for one computer may not run on another computer due to the fact that the computer peripherals are different. Often differences in peripherals can be accommodated by means of additional software routines called "emulator" routines which are special software peripheral driver routines which translate between parameters generated by the application software and the parameters required to operate a given peripheral.
In other cases however, such program solutions are not available. This is because the main application program contains its own peripheral driver routines which program directly the hardware circuits that control an associated peripheral. For example, in order to save processing time, most conventional computers use dedicated circuitry to control the display of information on the computer's monitor. Such circuitry is usually designated a CRT controller and contains a plurality of internal registers that set monitor characteristics such as screen resolution, refresh rate and number of raster lines. The CRT controller registers can generally be loaded with appropriate parameters by driver software running in the system. Many popular software application programs which have their own driver routines directly program the CRT controller by loading parameters into its various registers so that it operates with a particular CRT monitor. When such software is used on a system other than that for which it was written, it will not operate properly because the software-programmed CRT controller contains incorrect parameters for the different monitor. Thus the application program either cannot be used on the computer system or a special version for that computer system and peripherals must be written.
Therefore, it is an object of the present invention to provide emulation circuitry which will allow an application program to run on a computer system other than the one for which it was written.
It is another object of the present invention to provide emulation circuitry which can convert peripheral parameters passed by an application program to a peripheral controller into peripheral parameters which are useful with a peripheral device that is different from the device for which the application program was written.
It is yet another object of the present invention to perform hardware emulation in a manner that is transparent to the application program.
It is a further object of the present invention to perform hardware emulation in a straight-forward and simple manner.
It is a still further object of the present invention to provide hardware emulation circuitry in which peripheral emulation hardware prevents the processor from accessing registers within the peripheral device controller which contain peripheral device-specific parameters.
It is yet a further object of the present invention to allow the processor to access registers in the peripheral device controller which do not contain peripheral device-specific parameters.
It is yet a further object of the present invention to provide peripheral emulation hardware in which peripheral-specific parameters in the peripheral controller are programmed by a second processor, without interfering with the operation of the primary processor.